LLM 进阶 Prompt 技巧

链式思维提示(Chain-of-thought prompting)

在提示中提供解决问题的逻辑思维流程,如“先理解问题,然后建立等式,最后计算结果”。可以明显提升数学推理任务的性能。 示例:

First, let's understand the problem and write down the given information. Then, let's figure out what we need to calculate and what operations to apply. Finally, let's calculate step-by-step to get the answer.

首先,让我们理解问题并写下给定的信息。然后,让我们弄清楚我们需要计算什么以及应该使用哪些操作。最后,让我们逐步计算以获得答案。

步骤提示(Step-by-step prompting)

提示LLM逐步解决问题,如“让我们一步一步来解决这个问题”。也可用于数学推理中。

示例:

Let's solve this math word problem step-by-step to ensure we arrive at the right solution.

让我们逐步解决这个数学问题,确保我们得出正确的解答。

示例提示(Example prompting)

在提示中给出该任务的输入输出样例,让LLM学习对样例进行推理。

示例:

Here are two input-output examples for mathematical word problems: Input: Mary had 32 apples. She gave Sam some apples. Now Mary has 12 apples left. How many apples did Mary give to Sam? Output: 20 Input: Kevin walked 4 miles on Monday, 3 miles on Tuesday and 2 miles on Wednesday. How many total miles did Kevin walk over the three days? Output: 9

这里有两个数学问题的输入和输出示例:

输入:玛丽有32个苹果。她给了山姆一些苹果。现在玛丽还剩下12个苹果。玛丽给了山姆多少个苹果?

输出:20

输入:凯文在星期一走了4英里,在星期二走了3英里,在星期三走了2英里。凯文在这三天里一共走了多少英里?

输出:9

 

特征提示(Feature prompting)

明确提示需要考虑的特征,如对电影推荐提示考虑“题材、情节、音乐、评分”等特征。

示例:

To recommend a good movie, let's consider the genre, plot, reviews, ratings, actors, and awards.

推荐一部好电影,我们应该考虑电影的类型、剧情、评论、评分、演员和获奖情况。

模式提示(Pattern prompting)

提示应遵循的答案模式,如“电影名是:”。规范化输出格式有助理解。

示例:

The movie I recommend is:

我推荐的电影是:

属性提示(Attribute prompting)

指定应关注对象的哪些属性,如“考虑每个物体的颜色和顺序”。

示例:

Pay attention to the color and order of the objects mentioned.

请注意所提及的物体的颜色和顺序。

反事实提示(Counterfactual prompting)

构造假设情形,让LLM进行逻辑推理。

示例:

If the person had gone to the park instead during that time, would they have been able to go to the museum afterwards based on the schedule provided?

如果那个人那个时间去了公园,根据所提供的日程安排,他们之后能否去博物馆呢?

类比提示(Analogical prompting)

使用类比的方式让LLM学习规律,如“音乐家名字改编类似歌曲名字改编”。

示例:

Let's alter the artist's name in a creative way, similar to how song titles can be changed to be funny.

让我们以创意的方式改变艺术家的名字,就像歌曲标题可以改编得有趣一样。

常识提示(Commonsense prompting)

提供必要常识并让LLM运用,可减少错误。

示例:

Keep in mind that a week has 7 days.

请记住一周有7天。

多样化提示(Diverse prompting)

尝试组合使用上述不同类型的提示,发掘更好的提示方式。

示例:

First, list out the key information provided [Chain-of-thought]. Next, consider how to approach this step-by-step [Step-by-step]. Finally, calculate the solution and write it in the form X is Y [Pattern].

首先,将提供的关键信息列出来【思维链】。接下来,考虑如何逐步进行解决【步骤提示】。最后,计算出解决方案并以“X是Y”的形式写出来【模式提示】。

更多组合使用的案例

链式思维 + 步骤提示

"首先,我们一步一步来理解这个问题。首先写出已知信息,然后确定我们需要计算的目标,最后按照步骤计算结果。"

特征提示 + 模式提示

"考虑这个电影的题材、评分和主演,请告诉我最适合观众喜好的电影名字是:"

属性提示 + 反事实提示

"注意每个物体的颜色和顺序。如果第三个物体是红色而不是绿色,后面的顺序是否会改变?"

类比提示 + 常识提示

"我们可以像改编歌曲名字那样创造性地改编艺术家的名字。但是要注意不要用 offensive 的名字。"

示例提示 + 链式思维提示

"这里有两个数学词问题的输入输出样例......根据这些例子,我们首先理解问题,然后建立等式,最后计算结果。"

步骤提示 + 特征提示

"让我们一步一步考虑这个电影推荐问题。首先确定用户的偏好,然后筛选合适题材和评分的电影,最后从中推荐最适合用户的电影。"

属性提示 + 反事实提示 + 多样化提示

"注意每个物体的颜色和相对顺序。如果顺序发生变化,颜色是否也会改变? 请回答这个假设情形下的提问。"

思维链 + 步骤提示 + 模式提示

First, list out the key information provided [Chain-of-thought]. Next, consider how to approach this step-by-step [Step-by-step]. Finally, calculate the solution and write it in the form X is Y [Pattern].

首先,将提供的关键如果那个人在那个时间去了公信息列出来【思维链】。接下来,考虑如何逐步进行解决【步骤提示】。最后,计算出解决方案并以“X是Y”的形式写出来【模式提示】。

其他建议

  1. 温度选择

适当的温度可以使模型同时兼顾利用已有模式和探索新的可能。论文中实验表明,温度为1.0时效果较好。太高会过于随机,太低会陷入局部最优。

比如可以这样:

温度0.7时:请简要概括这篇文章的内容。

温度1.0时:这篇文章探讨了使用大语言模型进行优化问题求解,提出了OPRO框架,并在多个任务上进行了评估实验,结果证明了该方法的有效性。

温度1.5时:这是一篇关于火星探索的好文章!

  1. 多样化提示

使用不同类型的提示(例如链式思维提示、步骤提示等)可以提供不同角度的指导,组合提示可以让模型综合信息。单一提示容易局限。

单一提示:请告诉我2+3等于多少?

组合提示:首先,2+3需要做加法运算。根据数学知识,2加3的结果是5。

  1. 简化提示语言

提示使用简单明了的语言,避免过于复杂的语句让模型难以把握重点。但关键信息不能遗漏。

复杂提示:受限于计算资源及复杂度的约束,先验归纳偏置的设置对于部署实际系统至关重要。

简单提示:选择合适的先验设置很重要。

  1. 提供背景常识

适当提供常识性的背景信息,如日期格式、基本运算顺序等,可以减少明显的常识性错误。

不提供常识:7月5日是一个什么日子?

提供常识:今天是2023年2月28日,星期二。7月5日是什么日子?

  1. 给出模式

针对要求的输出提供预期的答案模式(如"X之所以发生是因为..."),可以让模型明确方向。

不给模式:介绍一下机器学习。

给出模式:机器学习是_____。

  1. 减少无关信息

去除对解决问题无关的语句,只提供关键信息,可以避免引入偏差。

有无关信息:苏格拉底是古希腊哲学家,他提出知道自己不知道是最聪明的。请回答2+3等于几。

无无关信息:2+3等于几?

  1. 迭代优化提示

如果初始提示效果不佳,可以尝试通过 OPRO 算法逐步改进提示词语。

初始提示:2+3等于__[ ]。

优化后提示:首先,2加3需要做加法运算。2加3的结果是[__]。

  1. 测试不同提示

针对同一问题,测试不同类型的提示词语,Combine 效果最好的提示。

提示1:计算2+3的值。 提示2:进行数学运算,2加3等于多少? 提示3:首先,进行加法运算。其次,2加3的值是多少?